﻿using System;

namespace VariableScopeApplication
{
    /*
     C# 变量作用域
        变量作用域定义了变量的可见性和生命周期
        变量的作用域通常用花括号{}定义的代码块来确定
        局部作用域 块级作用域 方法作用域 全局作用域 静态变量作用域 循环变量作用域
     */
    // 在类的成员级别定义的变量是成员变量，它们在整个类中可见，如果在命名空间级别定义，那么它们在整个命名空间中可见
    class MyClass
    {
        int memberVar = 30; // 成员变量，在整个类中可见
        static int staticVar = 40; //静态变量，在整个类中可见

        void MyMethod() {
            for (int i = 0; i < 5; i++)
            { 
                // i 在循环体内可见
            }
            // i在这里不可见
        }
    }

    public class VariableScope
    {
        // 局部变量 在方法、循环、条件语句等代码块内声明的变量是局部变量，它们只在声明他们的代码块中可见
        void MyMethod(int paramter)  // 方法参数作用域 方法参数也有其自己的作用域，他们在整个方法中都是可见的
        {
            // paramter 在整个方法中可见
            // ...
            int localVar = 10; // 局部变量
            // ...
            // 在C#7及更高版本中，引入了块级作用域，即使用大括号{}创建的任何块都可以定义变量的作用域
            {
                int blockVar = 10; // 块级作用域
                // ...
            }
            // blockVar 在这里不可见

        }
        // localVar 在这里不可见

    }

    public class ExecuteVaribale
    {

    }
}